/**
 * 
 */
package com.redside.dao;

import java.util.List;

import com.redside.model.Complaint;


/**
 * Complaint Data Access Object (DAO) interface.
 *
 * @author <a href="mailto:pchapman@easystreet.com">Peter Chapman</a>
 */
public interface ComplaintDao extends GenericDao<Complaint, Long> {
    
    /**
     * 
     * @return a List of Unverified Complaint objects
     */
    public List<Complaint> findAllUnverified();

    /**
     * @return a List of Complaint objects based on
     * countyId.
     * @param id the county id.
     */
    public List<Complaint> findByCountyId(String id);  
    
    /**
     * @return a List of <i>unverified</i> Complaint objects 
     * based on countyId.
     * @param id the county id.
     */
    public List<Complaint>findUnverifiedByCountyId(String id);
    
    /**
     * @return a List of Complaint objects based on County Id 
     * that are in Citation status
     * @param id the county id
     */
    public List<Complaint>findCitationComplaintsByCountyId(String Id);
    
    /**
     * Returns all Complaints and their history for a business
     * @param id the business id
     */
    public List<Complaint> findAllForBusinessView(Long businessId);
    
    /**
     * Returns a List of complaints that incomplete IRLs.
     * @param id the correspondence type id
     */
/*    public List<UnsentIRLView> findUnsentIRL(String countyId, Long correspondenceId,
            String sql1);
    
    public List <UnsentIRLView>findUnsentIRL(Long corresponceTypeId, String sql1);*/
    
    /**
     * Returns a List of complaints based on business id.
     * Includes the complaint date, status, and IRL sent date
     * @param id the business id
     */
    public List<Complaint> findComplaintsForVerifyProcess(Long id);
    /**
     * Returns a List of SiteVisitView objects based on county id.
     * @param countyId the County id.
     */
/*    public List<SiteVisitView>siteVisitByCountyId(String countyId);*/
    /**
     * Returns a List of Complaints for remediation based on county id.
     * @param countyId the County id
     */
    public List<Complaint>findRemediationByCountyId(String countyId);
    
    /**
     * Returns a List of Complaints for remediation based on county id.
     * @param countyId the County id
     */
    public List<Complaint>findAllRemediations();
    
    /**
     * Returns all Complaints based on business Id
     * @param id the business id
     */
    public List<Complaint> findByBusinessId(Long businessId);    
}
